package com.example.system.class25;

import java.util.LinkedList;

/**
 * @Date 2022/8/25
 * @Author Jonathan
 * </p>
 * 给定一个整型数组arr，和一个整数num
 * 某个arr中的子数组sub，如果想达标，必须满足：
 * sub中最大值 – sub中最小值 <= num，
 * 返回arr中达标子数组的数量
 */
public class Code02_AllLessNumSubArray {
    public static void main(String[] args) {
        System.out.println("hello world");
    }


    public static int getArrayNum(int[] arr, int num) {
        // 大队列
        LinkedList<Integer> qmax = new LinkedList<>();
        // 小队列
        LinkedList<Integer> qmin = new LinkedList<>();
        for (int index = 0; index < arr.length; index++) {
            while (!qmax.isEmpty() && arr[qmax.peekLast()] < arr[index]) {
                // 将小的弹出来
                qmax.pollLast();
            }

            while (!qmin.isEmpty() && arr[qmin.pollLast()] > arr[index]) {
                // 将大的弹出来
                qmin.pollLast();
            }
            //
            qmax.add(index);
            qmin.add(index);
        }
        return 0;
    }
}
